| 特性/方式       | WebSocket 🔁          | SSE 👈（单向）          | 长轮询 🕒    | 短轮询 ⏱️    |
| ----------- | --------------------- | ------------------- | --------- | --------- |
| **连接方式**    | 全双工持久连接               | 单向持久连接              | 短连接（请求挂起） | 短连接（固定频率） |
| **通信方向**    | 双向（Client ⇄ Server）   | 单向（Server → Client） | 单向        | 单向        |
| **实时性**     | ★★★★☆                 | ★★★☆                | ★★★☆      | ★★☆☆      |
| **资源消耗**    | 低（少量连接）               | 低                   | 中         | 高（频繁请求）   |
| **浏览器支持**   | 较好（IE不支持）             | 非IE全支持              | 所有支持      | 所有支持      |
| **兼容性**     | ❌ IE 不支持（Polyfill 可补） | ❌ IE/旧版不支持          | ✅ 所有浏览器   | ✅ 所有浏览器   |
| **服务器支持难度** | 中（需升级 WebSocket）      | 简单（普通 HTTP）         | 简单        | 简单        |
| **连接维护**    | 需心跳保持                 | 自动重连                | 需客户端管理重发  | 不需状态管理    |
| **适用场景**    | 聊天、游戏、股票等实时性要求高       | 实时通知、后台推送           | 消息偶发的实时更新 | 不敏感的更新检测  |

✅ 各自优缺点详细解释：
1. WebSocket
✅ 优点：

真正的全双工通信

实时性最强

连接只建立一次，节省资源

❌ 缺点：

需服务端支持 WebSocket 协议（如 nginx、node 等要配置）

对老旧浏览器兼容性差（IE 不支持）

复杂度略高（心跳/断线重连等）

2. SSE（Server-Sent Events）
✅ 优点：

建立在 HTTP 协议之上，简单易用

自动重连（浏览器实现）

适用于服务端向客户端推送单向消息

❌ 缺点：

只支持单向推送（无法客户端 → 服务端）

不支持 IE

一些代理/CDN 会中断 SSE 的连接

3. 长轮询
✅ 优点：

使用普通 HTTP 协议，兼容性好

接近实时（服务器可以挂起等待新消息）

实现简单，适合轻量场景

❌ 缺点：

每次请求都要新建连接，存在性能浪费

实时性不如 WebSocket

需要手动处理超时和重连逻辑

4. 短轮询
✅ 优点：

简单易实现

所有浏览器都支持

❌ 缺点：

浪费资源（可能一直在请求但没有数据）

实时性差（取决于轮询间隔）

对服务器压力大

| 场景             | 推荐方式      |
| -------------- | --------- |
| 实时聊天、在线游戏、协作   | WebSocket |
| 实时通知、版本更新推送    | SSE 或长轮询  |
| 简单定时刷新（数据不频繁）  | 短轮询       |
| 老旧系统、后端仅支持HTTP | 长轮询或短轮询   |
